import config from "./config.js";
// 封装请求函数
function request(options) {
  // console.log(config.getBaseUrl() + options.url);
  // 显示加载中
  wx.showLoading({
    title: "加载中...",
    mask: true,
  });

  return new Promise((resolve, reject) => {
    wx.request({
      url: config.getBaseUrl() + options.url,
      method: options.method || "GET",
      data: options.data || {},
      header: {
        ...config.headers,
        // 添加token等全局参数
        Authorization: wx.getStorageSync("token") || "",
        ...options.headers,
      },
      timeout: config.timeout,
      success: (res) => {
        wx.hideLoading();
        // 统一处理返回结果
        if (res.statusCode === 200) {
          // 假设后端返回格式为 { code: 0, data: ..., msg: '' }
          if (res.data.code === 0) {
            resolve(res.data);
          } else if (res.data.code === 401) {
            // 登录态失效，统一处理
            wx.removeStorageSync("token");
            wx.navigateTo({ url: "/pages/index/index" });
            reject(res.data);
          } else {
            wx.showToast({
              title: res.data.msg || "请求失败",
              icon: "none",
            });
            reject(res.data);
          }
        } else {
          wx.showToast({
            title: `网络异常,无法连接服务器`,
            icon: "none",
          });
          reject(res);
        }
      },
      fail: (err) => {
        wx.hideLoading();
        wx.showToast({
          title: "网络异常",
          icon: "none",
        });
        reject(err);
      },
    });
  });
}

export default request;
